package com.wl.designpattern.strategy;

/**
 * 策略模式
 *
 * Strategy execute 接口
 * ConcreteStrategyA 、ConcreteStrategyB 具体策略
 * Context 相关上下文
 *
 * 优点
 * 易扩展
 * 避免使用多重条件选择语句
 *
 * 缺点
 * 策略的增多会导致子类的也会变多
 * 客户端必须知道所有的策略类，并自行决定使用哪一个策略类。
 *
 * 应用
 * ListView setAdapter 选择ArrayAdapter SimpleAdapter 就是策略模式
 *
 * Created by wangliang on 2021/2/22.
 */
public class Test {

    public static void main(String[] args) {
        Context context;

        //策略1
        context = new Context(new ShoppingStrategy());
        context.doSomething();

        //策略2
        context = new Context(new MoviesStrategy());
        context.doSomething();

        //策略3
        context = new Context(new EatingStrategy());
        context.doSomething();


    }

}
